import { useLanguageStore } from '@/store/languageStore'

/**
 * 递归翻译数据的 Hook
 * @returns {Object} 包含翻译函数的对象
 */
export function useTranslateData() {
  const languageStore = useLanguageStore()
  const { t } = languageStore

  /**
   * 递归翻译函数：将数据中的所有字符串使用 t 方法翻译
   * @param {*} obj - 需要翻译的数据
   * @returns {*} 翻译后的数据
   */
  const translateData = (obj) => {
    if (Array.isArray(obj)) {
      // 如果是数组，遍历每个元素
      return obj.map(item => translateData(item))
    } else if (obj && typeof obj === 'object') {
      // 如果是对象，遍历所有属性
      const translatedObj = {}
      for (const [key, value] of Object.entries(obj)) {
        if (typeof value === 'string') {
          // 如果是字符串，使用 t 方法翻译
          translatedObj[key] = t(value)
        } else {
          // 如果是其他类型，递归处理
          translatedObj[key] = translateData(value)
        }
      }
      return translatedObj
    } else if (typeof obj === 'string') {
      // 如果是字符串，直接翻译
      return t(obj)
    } else {
      // 其他类型直接返回
      return obj
    }
  }

  /**
   * 翻译对象的每个属性
   * @param {Object} dataObj - 需要翻译的对象
   * @returns {Object} 翻译后的对象
   */
  const translateObjectProperties = (dataObj) => {
    if (!dataObj || typeof dataObj !== 'object') {
      return dataObj
    }

    const translatedObj = {}
    for (const [key, value] of Object.entries(dataObj)) {
      // 翻译 key（如果有对应的翻译）
      const translatedKey = t(key)
      const finalKey = translatedKey !== key ? translatedKey : key
      
      // 翻译 value
      translatedObj[finalKey] = translateData(value)
      
      // 保留原始 key，以便代码中可以继续使用原始字段名
      if (finalKey !== key) {
        translatedObj[key] = translateData(value)
      }
    }
    return translatedObj
  }

  return {
    translateData,
    translateObjectProperties
  }
}
